Skip to content

ci(docs): scheduled doc e2e persona fleet that executes the documented journeys#708

Open
ojongerius wants to merge 3 commits into
mainfrom
claude/great-pasteur-YgeUW
Open

ci(docs): scheduled doc e2e persona fleet that executes the documented journeys#708
ojongerius wants to merge 3 commits into
mainfrom
claude/great-pasteur-YgeUW

Conversation

@ojongerius
Copy link
Copy Markdown
Contributor

What

Adds a scheduled, persona-driven documentation end-to-end audit. A fleet of "new user" personas follows the published docs and actually executes each step in a throwaway environment — install → run the daemon → emit → inspect with the CLI → view the dashboard — using only what the docs say. It reports anything unclear, missing, wrong, or that simply doesn't work when run, to a single GitHub tracking issue. This catches docs that read fine but don't run.

Pieces

  • .claude/agents/doc-e2e-runner.md — the subagent. Works in mktemp -d with its own XDG_DATA_HOME, follows the journey, runs every step, proves milestones with real output, and distinguishes doc bugs from environment limits. Verifies suspected factual errors against source. Never modifies the repo, commits, or opens issues; cleans up after itself.
  • .claude/doc-e2e/personas.md — six adopter journeys: Theo (Python), Maya (TypeScript), Raj (Go), Nina (MCP proxy), Omar (hook), Priya (dashboard). Add a persona = add a block.
  • .github/workflows/doc-e2e.yml — weekly + manual. Provisions Go/Node/pnpm/uv (the runners install and build per the docs) and a writable XDG_RUNTIME_DIR for the daemon socket, then runs the fleet and opens/updates a "Docs e2e drift report" issue.

Proven, not hypothetical

A live trial of the Theo/Python runner executed the whole journey on Linux (pip install → built the daemon from source → --init → started it → emitted with DaemonEmitteragent-receipts list/show/verify → dashboard HTTP 200), and surfaced real drift on main (stale @v0.8.0 install pin breaking list/show, a verify-path ergonomics issue, a missing PATH note). Those doc fixes are in #707.

⚠️ Requires maintainer review before it can run (per AGENTS.md — first Claude-in-CI workflow here)

  1. Add an ANTHROPIC_API_KEY repo secret. Until then a guard step skips the job, so scheduled runs stay green instead of hard-failing.
  2. Pin anthropics/claude-code-action@v1 to a commit SHA (there's a TODO(review) on the line) to match this repo's pinned-action convention.
  3. Confirm permissions: (issues: write) — that's the workflow's only write surface; it never edits files or opens PRs.

Notes

  • Expect the macOS-only GUI personas (Nina/Claude Desktop, Omar/Claude Code hook) to report environment-limited in headless CI — that's honest, not a failure.
  • .claude/ files are force-added (the repo already tracks .claude/hooks/*.sh + settings.json the same way despite the blanket ignore).
  • Cost/time scales with the fleet (six personas each install + build); consider starting with the headless SDK personas if runtime matters.

Generated by Claude Code

claude added 3 commits June 2, 2026 02:07
A fleet of persona 'new users' walks the published docs end to end using only
the documentation (install -> use -> inspect) and reports drift to a GitHub
tracking issue. Verified findings are cross-checked against SDK source.

- .claude/agents/doc-e2e-reviewer.md — read-only persona-walkthrough subagent
- .claude/doc-e2e/personas.md — 6 adopter journeys (Python, TS, Go, MCP proxy, hook, dashboard)
- .github/workflows/doc-e2e.yml — weekly + manual; guarded so it skips cleanly until ANTHROPIC_API_KEY is set

Requires human review before enabling: add ANTHROPIC_API_KEY secret, pin the
claude-code-action to a commit SHA, and confirm the issues:write permission.
- Rename the subagent doc-e2e-reviewer -> doc-e2e-runner: it now follows the
  docs and actually runs each step in a throwaway environment (install, daemon,
  emit, CLI, dashboard), proving the journey works and reporting steps that fail
  as written. Adds Write/Bash tools; keeps source-verification of factual claims.
- personas.md: reframe for execution; runner uses its real OS and flags missing
  OS coverage. Rename persona liam-python -> theo-python.
- workflow: provide Go/Node/pnpm/uv toolchains so runners can install+run; update
  the orchestration prompt to the execute-and-prove framing.
The runner's shell does not persist env vars between separate commands, so a
one-time 'export XDG_DATA_HOME=...' did not reach a later inspection command —
making the runner misread a tool's $HOME-fallback default as 'ignores
XDG_DATA_HOME' (a false positive against the dashboard, which actually honors it
since v0.3.0). Instruct the runner to persist env to a file and re-source it on
every command, and to never log a default read from a shell without the env
applied. No persona/journey changes.
@ojongerius ojongerius force-pushed the claude/great-pasteur-YgeUW branch from a55d7df to 72d1531 Compare June 2, 2026 02:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants